Escribiendo con R y Quarto
  • Info
  • Materiales
  • Blog
  • Truquillos
  • Pedro J. Pérez

En esta página

  • Con Quarto se pueden hacer muu:scream_cat:uuchas más cosas!!!
    • 6.1 Subir nuestra web a la UV
    • Práctica: Subir nuestra web
    • 6.2 Gestión de bibliografia
    • Práctica: Gestión de bibliografía
    • 6.3 Generar el mismo documento en múltiples formatos
    • Múltiples formatos (más posibilidades)
    • Práctica: Documentos con varios formatos
    • Ejercicios interactivos
    • Práctica: Ejercicios interactivos con webexercises
    • 6.5 Incorporar tablas
    • 6.5 Un poco más de tablas
    • Journal articles
  • Con Quarto AÚN se pueden hacer muu:scream_cat:uuchas más cosas!!
    • Diagramas (con Mermaid y Graphviz)
    • Countdown
    • Crear un glosario de términos
    • Crear botones de descarga
    • Extensiones
    • Curriculums con Quarto
    • Posters con Quarto
    • Más formatos con .Rmd
    • Trucos CSS y SASS
  • AÚN :scream_cat: más cosas!!!
    • Informes parametrizados
    • Runing Stata in Quarto documents
    • Runing SPSS in Quarto documents
    • Shiny en Quarto
    • Queries to bibliographc databases
    • Trabajando con documentos WORD
    • Plantillas/cosas de pdf’s
    • Ejemplitos (de copiar y hacer)
  • Ver el código
  • Informar de un problema

Otros formatos

  • RevealJS

Más cosas con Quarto

(Web del curso aquí)

Fecha de Publicación

20 de mayo de 2024

Con Quarto se pueden hacer muu:scream_cat:uuchas más cosas!!!



Veamos algunas de ellas

6.1 Subir nuestra web a la UV

  • Una vez hemos generado nuestra web en local con Quarto nos queda subirla a Internet. La documentación oficial de Quarto está aquí

  • Hay muchos servicios de alojamiento, por ejemplo.

  • Aquí explican las ventajas y cómo subir una web a Netlify.

. . .

  • Pero … nosotros tenemos un espacio en la web de la UV, así que …

Práctica: Subir nuestra web

Tarea 6.1a: Subir nuestra web
  • Tarea
  • Pistas
  • Sí, tienes que subir nuestra web a nuestro espacio en el servidor web de la UV
  • Para subir nuestra web a nuestro espacio UV, solo tenemos que subir los ficheros de la carpeta docs o _site a la web de la UV

  • Pero antes, hay que tener activado vuestro espacio web en UV. Veamos cómo hacerlo con este post

. . .

  • Perfecto!!, pero, imagina que te vas a un congreso y quieres subir unas slides para poder hacer la presentación desde la web. ¿Cómo lo haces?
Tarea 6.1b: Subir unas slides
  • Tarea
  • Pistas
  • Sí, tienes que subir unas revealjs slides a tu espacio web en la UV
  • Si has hecho las slides autocontenidas, entonces sólo tendrás que subir el fichero my_slides.html a tu espacio web en la UV

  • Consejo: yo alojaría las slides en un directorio llamado slides o presentaciones o algo similar

6.2 Gestión de bibliografia

  • Imagina que en uno de nuestros post queremos incorporar referencias bibliográficas y además referenciarlas en el cuerpo del artículo ¿te suena, no?

. . .

Además,

  • no queremos tener que copiar a mano las referencias y

  • tampoco queremos tener que cambiar el formato 😱😱 de las referencias si es que decidimos cambiar de revista

. . .


¿Cómo lo hacemos?

  • Os lo cuento en este post, y vamos a practicarlo con una tarea

Práctica: Gestión de bibliografía

  • Para ello, vamos a utilizar el archivo: Qproject_eurovision/tareas/tarea_6.2_biblio.qmd

. . .

Tarea 6.2: Incorporar y gestionar referencias bibliográficas
  • Tarea 6.2.a
  • Tarea 6.2.b
  • Tarea 6.2.c
  • Tarea 6.2.d
  • Resulta que ya tenemos el documento .bib con la información de nuestras refrencias. Está en: ./assets/refrences.bib

  • Tenemos que referenciar el documento .bib en el yaml del .qmd. Algo como:

bibliography: <ruta-a-my_references.bib>


  • Pero … tenéis que pensar como poner la ruta a: ./assets/references.bib


  • Una vez hecho, procesa el .qmd . ¿Qué ha pasado? ¿Se han incorporado las referencias?

  • No. ¿Por qué? 🤔

  • Por defecto solo se muestran las referencias que hemos utilizado en nuestro .qmd

  • Así que, vamos a incorporar en el texto de nuestro .qmd algunas alusiones a nuestras referencias.

  • Para ello vamos a utilizar el editor Visual de RStudio.

  • Ahora vamos a añadir una nueva referencia a nuestro fichero .bib. Por ejemplo esta

  • Para ello, también vamos a usar el editor Visual de RStudio

  • Insertemos una alusión a esta nueva referencia en el texto de nuestro .qmd; si no, no apareceré en el listado de referencias.

  • Por defecto Pandoc, y por ende Quarto, usa el “Chicago Manual of Style”, pero podemos cambiarlo.

  • Por ejemplo, vamos a cambiar el estilo de las referencias a “American Psychological Association”

  • Para ellos hay que obtener/usar un archivo CSL (Citation Style Language)

  • Puedes obtener ficheros .csl para multitud de formatos aquí. Solo tenemos que buscar el estilo que queremos y descargarlo.

  • Por ejemplo, nos descargamos el fichero para el formato APA 7th edition. Este es el enlace de descarga

  • Para usar el archivo .csl que acabamos de descargar hay que referenciarlo en el yaml, añadiendo algo como:

csl: <ruta-a-my-fichero.csl>
  • Vuelve a procesar el .qmd. ¿Qué ha pasado? ¿Se han cambiado las referencias?



6.3 Generar el mismo documento en múltiples formatos

  • Sí, una de las múltiples ventajas de Quarto es que, con un mismo documento .qmd (o documento fuente) podemos generar documentos en múltiples formatos. Por ejemplo, .html, .docx, .pdf, .epub etc.


. . .

¿Cómo? Solo hay que hacer 2 cosas:
  1. especificarlo en el YAML, por ejemplo:

    title: Mi documento
    author: Pedro J. Pérez
    toc: true
    format: 
      html: default
      epub: default
      docx: default
  2. El render del documento se ha de hacer desde la Terminal:

    quarto render mi-multi-format-document.qmd

Múltiples formatos (más posibilidades)


Render, con opciones, desde la Terminal
  • Otra posibilidad es hacer el Render desde la Terminal con opciones. Algo como:

    quarto render my-document.qmd --to pdf
    
    quarto render tareas/tarea_6.3_varios-formatos.qmd --to epub


. . .

Otra posibilidad
  • Los documentos .html que generemos, ya sean estos documentos individuales o dentro de una web, pueden incluir links al mismo documento en otros formatos. Documentación aquí.

  • El YAML del documento tendría que quedar algo como:

    format: 
      html: default
      docx: default
    format-links: [docx]

Práctica: Documentos con varios formatos


Tarea 6.3: Obtener varios formatos con el mismo .qmd
  • Tarea
  • Solución
  • Procesa el documento: tareas/tarea_6.3_varios-formatos.qmd

  • Fíjate que el yaml ya está preparado para generar 2 formatos: .html y .docx

  • Recuerda que hay que hacer el Render desde la Terminal 🤔

  • En la terminal has de escribir algo como:
quarto render Qproject_eurovision/tareas/tarea_6.3_varios-formatos.qmd

Ejercicios interactivos

  • Hay varios paquetes como learnr que permiten incorporar ejercicios interactivos a documentos .html generados con Quarto, pero …

. . .

      … tienen un inconveniente: los tutoriales deben ser ejecutados locamente
          o alojados en un servidor shiny

. . .


  • El paquete webexercises soluciona ese problema ya que genera “standalone HTML files that require only a JavaScript-enabled browser”.

  • El objetivo de webexercises es:

To enable instructors to easily create interactive web pages that students can use in self-guided learning

Práctica: Ejercicios interactivos con webexercises


Tarea 6.4: Jugar un poco con webexercises
  • Tarea 6.4.a
  • Tarea 6.4.b
  • Una solución a 6.4.b
  • Algunos detalles
  • Abre el documento: tareas/tarea_6.4_webexercises.qmd

  • Mira su contenido

  • Procesa el documento

  • Abre el documento html que se ha generado y … trata de resolver las preguntas

  • Añade una nueva pregunta


```{{r}}
#| results: asis
opts <- c(
   "Quarto es cuatro en balinés",
   answer = "Un sistema de publicación científico-técnica de acceso abierto que es lo más!!!",
   "Quarto es una marca de muebles sueca"
)

cat("¿Qué es Quarto?", longmcq(opts))
```


  • Para usar el paquete hay que instalarlo, por ejemplo con: pak::pak("webexercises")


  • Para procesar correctamente los ficheros “webexercises” hay que tener los .css y .js necesarios. Para ello:
webexercises::add_to_quarto(include_dir = "assets/webexercises")


  • Nosotros ya teníamos una plantilla “webexercises” en la carpeta ./tareas/tarea_6.4_webexercises.qmd. La creé con algo como:
webexercises::create_quarto_doc(name = "my_titulo", open = interactive())


6.5 Incorporar tablas

  • A veces veces tenemos unos datos, o un listado de algo como: tareas, estudiantes, calendario etc… en un fichero Excel, o Google Sheet, que queremos incorporar a nuestros documentos, ¿Cómo lo hacemos?

. . .

  • Si tenemos los datos en el fichero datos/matriculados.xlsx solo habría que:
```{r}
df <- rio::import("./datos/matriculados.xlsx")
gt::gt(df)
```
```{r}
df <- rio::import("./datos/matriculados.xlsx")
DT::datatable(df)
```

. . .


Si los datos los tuviesemos en Google Sheets:
# googlesheets4::gs4_deauth() #- si tuvieses q autorizar
my_url <- "https://docs.google.com/spreadsheets/d/16XpV9I0_hoyPqV6o7Pkir4c_mmwgHM4UuGXuM7t7vUc/edit?usp=sharing"
df <- googlesheets4::read_sheet(my_url)
gt::gt(df)


  • Un ejemplo en esta web. Es un curso de Mine Çetinkaya-Rundel en el que el calendario de sesiones se carga desde un archivo de Google Sheets. El código para hacer la tabla puedes verlo aquí. El documento de Google está aquí

6.5 Un poco más de tablas


. . .

¿Cómo hacer tablas más chulas?

  • En este post explica en detalle cómo se pueden hacer tablas muy chulas con R

. . .


Tablas estadísticas

  • Muchas veces hay que presentar los resultados de contrastes o de la estimación de modelos estadísticos. En estos casos, las tablas son una herramienta muy útil para presentar los resultados de una manera clara y concisa.

  • Vamos a profundizar en ello con este post del blog

Journal articles

  • El curso se ha centrado en la realización de documentos .html pero desde Quarto se pueden generar documentos en múltiples formatos.

  • Además, disponemos de plantillas para generar, directamente desde Quarto, documentos en el formato adecuado para un conjunto de Journals. Puedes ver el listado de Journals aquí y aquí

  • En Rmarkdown tenemos el paquete rticles con plantillas para generar documentos de un conjunto amplio de Journals

Extensión: más sobre publicación en Journals desde Quarto
  • Un hilo de Mastodon con las vicisitudes de M. Mahoney para publicar en Elsevier desde Quarto:

  • Journals para publicar código.

  • Esta charla de Mine Çetinkaya-Rundel habla de este tema en el minuto 14 aprox.

Con Quarto AÚN se pueden hacer muu:scream_cat:uuchas más cosas!!



Veamos algunas de ellas

Diagramas (con Mermaid y Graphviz)

  • Quarto permite hacer diagramas con Mermaid y Graphviz. Lo que, según la documentación oficial, posibilita la creación de flowcharts, sequence diagrams, state diagrams, Gantt charts, and more usando una sintaxis (de texto) similar a Markdown.

. . .

  • Un ejemplo:


El código

```{mermaid}
flowchart LR
  qmd --> J([Jupyter])
  qmd --> K([knitr])
  J --> md
  K --> md
  md --> P([pandoc])
  P --> pdf
  P --> html
  P --> docx
```

El resultado:

flowchart LR
  qmd --> J([Jupyter])
  qmd --> K([knitr])
  J --> md
  K --> md
  md --> P([pandoc])
  P --> pdf
  P --> html
  P --> docx



Diagramas (con Mermaid y Graphviz)
  • Otro ejemplo
Código
```{mermaid}
gantt
dateFormat  YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10

section A section
Completed task            :done,    des1, 2014-01-06,2014-01-08
Active task               :active,  des2, 2014-01-09, 3d
Future task               :         des3, after des2, 5d
Future task2              :         des4, after des3, 5d
```

gantt
dateFormat  YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10

section A section
Completed task            :done,    des1, 2014-01-06,2014-01-08
Active task               :active,  des2, 2014-01-09, 3d
Future task               :         des3, after des2, 5d
Future task2              :         des4, after des3, 5d


  • En los “mermaid diagramms”, se pueden utilizar themes en los. Documentación aquí

  • Ejemplos más complejos de Mermaid aquí

  • Ejemplos de GraphViz aquí


Countdown

  • Incluir un reloj para hacer cuentas atrás cuando pones un ejercicio a resolver en clase. Documentación aquí


Tarea: Incorporar un “countdown” a un documento .qmd
```{r}
# devtools::install_github("gadenbuie/countdown")
countdown::countdown(minutes = 0, seconds = 44)
```

Crear un glosario de términos

  • El paquete glossary permite crear un glosario de términos al final de un documento .html y referenciar términos del glosario en el texto.

. . .

  • ¿Cómo? No he llegado a probarlo pero básicamente tienes que
     - crear el glosario de términos en un documento .yml,
     - proporcionar su ruta a la función glossary_path()

. . .

  • Para añadir un término al glosario:
Código
glossary_add(term = "Ishi",
             def = "Ishi fue el nombre dado al último miembro de la tribu de los yahi de California, Estados Unidos. La palabra ishi significa hombre en idioma yahi."

. . .

  • Para referenciar palabras del glosario en el texto, se hace algo como:

Se considera a glossary::glossary("Ishi") el último nativo de la California septentrional que vivió fuera de la influencia de la cultura occidental. Su historia se popularizó a raíz de un libro de Theodora Kroeber, madre de Ursula K. Le Guin.

. . .

  • Además, puedes definir el estilo del glosario con glossary_style(). Por ejemplo:
Código
glossary::glossary_path("psyteachr.yml")
glossary::glossary_style("purple", "underline")


Crear botones de descarga

  • Se trata de crear unos botoncitos (chulos!!) en nuestra web que sirvan para descargarse los documentos (o recursos) que queramos

. . .


  • Vamos a probar a hacer estos botones con la extensión downloadthis.

  • Para ello vamos a usar la documentación de la extensión y este post del blog del curso.

Extensiones

  • En el curso se habla de las extensiones. En las slides nº5, concretamente aquí y en este post y en este otro

  • Aquí un post que cuenta como hacer extensiones

. . .

  • Por ejemplo podemos probar a usar la extensión fontawesome.

. . .


Algunas extensiones chulas:

  • code-fullscreen: permite que al pinchar en un bloque de código, este pase a estar a pantalla completa

  • nustshell: permite crear “expandable explanations”. Lo mejor es pinchar y ver los ejemplos

  • collapse-social-embeds: permite crear 6 tipos de nuevos callouts para social contents (Github gist, Twitter tweets, Mastodon toots, y vídeos de Loom, Vimeo y Youtube). Puedes ver un ejemplo aquí. Seguramente acabaré usándolo en el curso!!

  • downloadthis: permite crear botones de descargar muy chulos. Ya la hemos usado

  • pointer y quarto-spotlight: 2 extensiones para iluminar/agrandar el puntero del ratón en revealjs slides

  • line-highlight: similar a code-line-numbers pero ahora es para documentos html, no para RevealJs slides

  • webR: permite to run R code in the browser without the need for an R server to execute the code!!

  • Sverto: permite incorporar Svelte components that can seamlessly react to your ObservableJS code!!!

  • quarto-animate: permite crear unas animaciones muy “aparatosas”. Puedes ver un ejemplo aquí

Curriculums con Quarto

Desde Quarto se pueden hacer curriculums. Por ejemplo:

. . .

  • Plantilla para crear CV con Quarto: quarto-cv

  • Otra plantilla para hacer CV’s, de @BeaMilz: el código y el resultado

  • Tengo el CV en un .docx ¿puedo pasarlo a Quarto? Sí, aquí la explicación. Aconsejan pasarlo primero a Google doc’s


. . .

CV’s con .Rmd

  • Un currículum con pagedown::html_resume.

  • Curriculum con datadrivencv package

Posters con Quarto

  • Yo aún no he visto que se pueda, pero la gente esta esperando poder hacer posters con Quarto

. . .

  • Con .Rmd habían varios paquetes para hacer posters, por ejemplo con posterdown o con pagedown::poster_relaxed.

Más formatos con .Rmd


  • Business cards con pagedown::business_card


  • “Cuadros de mando” con flexdashboard: tienes algunos ejemplos aquí. Permite distintos layouts, incluidos los storyboards, por ejemplo este


  • Shiny apps con el paquete shiny: algunos ejemplos


  • Formatos posibles gracias al paquete rmdformats

Trucos CSS y SASS


  • En el improbable caso de que tengamos tiempo, veremos algunos trucos para tunear algunos aspectos de nuestros documentos y web/blog


  • Lo haríamos con este post del blog de “truqillos” del curso

AÚN :scream_cat: más cosas!!!



Ejemplos que se me han quedado en el tintero (quizás para otra edición)

Informes parametrizados

  • un ejemplo con notas y quizás mandarlo por mail


  • o con datos de inflación de varios países: https://datageeek.com/2023/03/16/food-inflation-interactive-chart-with-ggiraph/

Runing Stata in Quarto documents

Tampoco lo he probado, entre otras cosas porque no tengo Stata instalado, pero :

. . .


  • Podemos correr código de Stata en Quarto document: aquí se explica cómo usando un paquete de Phyton, pystata.


  • Stata Facade: una extensión de Quarto that hides the evidence of faking Stata dynamic content with Python code blocks and Stata cell magic.


  • También se puede con R: Statamarkdown y RStata

Runing SPSS in Quarto documents


No he visto que sea posible correr SPSS code dentro de R, pero para que tenemos R GUI’s. Otra comparación de GUI’s. Un post sobre Jamovi

. . .


  • r2spss y su vignette

  • Rmimic

  • expss

Shiny en Quarto

  • https://appsilon.com/interactive-quarto-report-translation-tutorial/#final

Queries to bibliographc databases

  • openalexR: “helps you interface with the OpenAlex API to retrieve bibliographic infomation about publications, authors, venues, institutions and concepts”

  • rscielo: “offers functions to easily scrape bibliometric information from scientific journals and articles hosted on the Scileo Platform

  • JCRImpactFactor: “JCRImpactFactor: Journal Citation Reports (‘JCR’) Impact Factor by Clarivate Analytics”

  • Scrapping WOS

  • Bibliometrix: “bibliometrix package provides a set of tools for quantitative research in bibliometrics and scientometrics”

  • RISmed: A set of tools to extract bibliographic content from the National Center for Biotechnology Information (NCBI) databases, including PubMed.

Trabajando con documentos WORD

  • officedown: facilita el formateo de informe de Word desde R. Aquí un libro y dos posts: aquí, otro aquí


  • officer: The officer package lets R users manipulate Word (.docx) and PowerPoint (*.pptx) documents. In short, one can add images, tables and text into documents from R.


  • docxtractr: Extract Data Tables and Comments from Microsoft Word Documents. Aquí un post sobre su uso.

Plantillas/cosas de pdf’s

  • Plantillas para hacer pretty pdfs: aquí y aquí

  • Plantilla para compact pdf

  • Nicola Rennie te dice cómo hacer pdfs parámetrizados: aquí

  • Quarto YouTube Playlist

  • Title Pages templates for adding a cover page to your Quarto pdf books. Un ejemplo

  • Great looking pdf with pagedown: vídeo aquí


  • Muchísimas más en Quarto awesome


Otras plantillas
  • Un instituto de física: https://github.com/sebdunnett/quarto-iop

  • quarto-lcars-theme:

Ejemplitos (de copiar y hacer)

  • Quarto sketchy html

  • Slides chulas pero sencillas de Mine. El repo aquí

  • Un ejemplo de slides chulas: Intro to Quarto, el repo aquí.

  • Un póster con posterdown o con pagedown::poster_relaxed.

  • Business cards con pagedown::business_card

  • “Cuadros de mando” con flexdashboard: tienes algunos ejemplos aquí. Permite distintos layouts, incluidos los storyboards, por ejemplo este

  • Shiny apps con el paquete shiny: algunos ejemplos

  • Formatos posibles gracias al paquete rmdformats

pak::pak('rstudio/pagedown')

© 2024 Pedro J. Pérez

 
  • Ver el código
  • Informar de un problema